Method and apparatus for choosing a combination of logic for generating random numbers using a difference signal

ABSTRACT

An apparatus and method for random number generation, including a plurality of cross- connected latches  210, 215, 220, 225,  providing at least two latch outputs (latch 1,  latch 0 ) is provided. At least one input of one latch  210, 215, 220, 225  of the plurality of latches being driven by a clock signal  100.  A first XOR  261  receives the at least two latch outputs (latch 0,  latch 1 ) as an input, and generates a mistake signal “E” when its inputs do not match from the at least two latch outputs(latch 0,  latch 1 ) being at different logic states. Te mistake signal is compared with a previously stored mistake signal by a second XOR  265  to determine whether to obtain a random bit from a pseudo random stream of bits.

[0001] This application claims priority to Provisional Ser. No. 60/454,815 filed Mar. 14, 2003.

FIELD OF THE INVENTION

[0002] The invention relates to the phenomenon of metastability, and the use of metastability in the field of random number generation.

BACKGROUND ART

[0003] The violation of the operating conditions of the flip-flops can cause them to go into an unstable (metastable) state. Metastability can occur when both inputs to a simple latch are set at a logic high (11) and are subsequently set at a logic low (00). Metastability can cause the latch outputs to oscillate unpredictably in a statistically known manner. Such metastable values are then detected by other circuitry as different logic states. Metastable latches also arrive at a random stable state after a period of time.

[0004] It has been found that intentionally inducing metastability provides the ability to harness the unpredictability of metastable flip-flop outputs as a random number generator.

[0005] The use of multiple meta-stable elements to generate a random event has been the subject of previous patent applications for random number generators by the current inventors. In such a random number generator, there are two latches that are placed in a metastable state, which resolves to a known but unpredictable condition. The outputs of the latches are compared, and if they differ, then a bit value is chosen from an unbiased stream of bits. This method works especially well if the meta-stable elements are biased (meaning that they produce more ones than zeros, or vice versa).

[0006] A drawback of previous metastable random number generator circuits was that the metastable elements were symmetrical. In some cases a tunable delay has been introduced for at least one of the elements because there are sometimes slight differences in even identical circuits due to manufacturing variations, temperature variations, etc.

SUMMARY OF THE INVENTION

[0007] The present invention provides a new method and apparatus for generating random numbers by using the metastability of simple latches.

[0008] According to a first aspect of the invention, a random number generator uses meta-stable elements that are synchronized by a set of flip-flops. The output of the stabilizing flip-flops are compared and used to generate counter events with a minimum of hardware.

[0009] According to another aspect of the present invention, the random number generator provides a more practical implementation as it does not rely on the metastable elements being symmetrical. Nevertheless, if two meta-stable elements are not identical, then it is also possible that they would differ almost always. Thus, the stream of chosen bits would be as predictable as the stream of unbiased bits. We offer a solution to this problem as well.

BRIEF DESCRIPTION OF THE DRAWING

[0010]FIG. 1 illustrates an aspect of the random number generator according to the present invention, wherein an arrangement of latches is shown receiving a clock signal generated from the circuit in FIG. 1.

[0011]FIGS. 2A and 2B illustrate additional aspects according to the present invention.

[0012]FIGS. 3A and 3B illustrates waveform outputs according to the present invention.

DETAILED EMBODIMENTS

[0013] It is understood by persons of ordinary skill in the art that the types of gates shown herein below were selected for explanatory purposes, and there can be different arrangements of different type of gates in terms of size, function and connectivity that fall within the spirit of the invention and the scope of the appended claims.

[0014]FIG. 1 illustrates a pair of D flip-flips 205, 210 that actually form a 74LS74 semiconductor, which is a dual positive edge triggered pair of flip-flops with preset, clear and complementary outputs. It can be seen in FIG. 2 that the preset 4, 10 and clear inputs 1, 13 receive a voltage from 5V source 204 after a drop across current limiting resistor R001. A low logic level on the preset or clear inputs will set or reset the outputs regardless of the logic levels of the other inputs. Applicants stress again that the practical examples are provided for illustrative purposes, and in no way should the instant invention and the appended claims be interpreted to limit the invention to these specific semiconductors or equivalents thereof. Boolean equivalents can be used for any of the circuitry shown and described.

[0015] The clock source 100 is connected to the clock input 3 of flip-flop 200. The clock input 11 of flip-flop 205 receives its clock input via XOR 203, which has a first input 5 from the source 100 and a second input 4 of a voltage remainder of a 5 volt source that is dropped across 4.7K ohm Resistor R006 thus converting XOR 203 to a simple inverter. Therefore, the clock input 11 of flip-flop 205 is high only when pin 6 on flip-flop 200 is low.

[0016] In the arrangement of flip flops-200, 205, the QBAR of flip-flop 200 is looped back to the D inputs 2, 12 of both flip-flops 200, 205. The Q output 5 of flip-flop 200 is provided to line A (Acquisition) shown in FIGS. 2A and 2B.

[0017] The Q output 9 of flip-flop 205 is provided to pins 1, 5, 9 and 12 of a 74LS00, which is a quad 2 input NAND gate circuit shown in FIG. 2. The outputs of quad gates 210 and 215 are cross connected to their inputs forming a latch, and the same arrangement up is employed for 220, and 225. Again the 74LS00 is shown for illustrative purposes and does not limit the instant invention as equivalent circuitry can be used. The Q output of pin 9 of flip flop 205 is also provided to an input labeled “STIMULUS” which stimulates the latches to a metastable state. The “STIMULUS” signal is used in FIG. 2B to advance LFSR 285.

[0018] The output of NAND gate 210 is latch0 and the output of NAND gate 220 is latch1. The latch0 and latch1 outputs, along with the acquisition output are provided to the arrangement of flip-flops shown in FIG. 2A. It is expected that the outputs latch0 and latch1 will have metastable voltage levels which are neither a logical “zero” or a logical “one”, therefore the circuit in FIG. 2A converts possible metastable signals to known logical “zeros” and “ones” as well as bringing the timing of these metastable values into synchronicity with the acquisition signal. Should the latches come out of their metastable state in a timely fashion the synchronizer circuit in FIG. 2A will capture this random result. The outputs of the parallel chains of flip-flops in FIG. 2A are then XOR'ed and the output of which is labeled “Mistake.” The “Mistake” signal represents a disagreement between the latch0 and latch1 signals. Since latch0 and latch1 are a random result based on metastable behavior they will disagree (a “mistake”) about half the time under specialized circumstances. However such ideal conditions will in general not be achieved thus creating additional uncertainty about when “Mistakes” will occur.

[0019]FIG. 2B shows an arrangement using the input mistake, acquisition and stimulus to provide an output from a shift register resulting in random bits shown in the waveforms in FIGS. 3A and 3B.

[0020] The XOR gate 265, shown in FIG. 2B compares the mistake signal with a previously stored mistake signal. The stored version of the mistake signal is kept in flip-flop 264. If the stored version of mistake disagrees with the current version a bit is stored in the shift register 275 provided the stored value is a logical zero. The shift register is enabled for shifting via AND gate 280. Again this circuit is a typical one, other arrangements such as allowing a new bit to be acquired when the stored mistake signal is a logical one, or acquiring a bit whenever a stored mistake is different from the current mistake signal are also possible.

[0021] The mistake signal apparatus is only used to define the appropriate time to acquire the random bit. The source of the random bit is a Linear Feedback Shift Register (LFSR) 285, preferably of a length of at least 64 bits using a dense polynomial as is known in the art. Such an LFSR produces a statistically even (nearly the same number of zeros as ones on average) predictable stream of bits. In order to ensure unpredictability the stimulus signal clocks the LFSR each time it rises from a low to a high signal. Thus the changes in the stimulus signal, which are regular, advance the LFSR each acquisition cycle. But the mistake apparatus decides when to acquire a bit. Since the acquisition of bits from the LFSR cannot be predicted the stream is random. An LFSR of 64 bits or more will produce a stream of bits that are nearly balanced (good enough for all practical purposes). Since the source of the bits is evenly the balanced the acquired bits are also evenly balanced. Thus, the shift register produces a stream of unpredictable, but statistically even (the same number of zeroes and ones on average) stream of bits. The system can be visualized best by seeing the LFSR producing a pseudo-random stream of bits that have nearly the same number of zeroes as ones. The rest of circuit randomly “picks” bits from this pseudo-random stream producing an unpredictable random stream of bits.

[0022] It is understood by persons of ordinary skill in the art that the examples illustrated and described have been provided for purposes of illustration, and not for limitation of the claimed invention to those illustrations. A person of ordinary skill in the art understand that various equivalent circuitry could be provided that does not depart from the spirit of the invention and the scope of the appended claims. For example, it is not necessary to use flip-flops for certain features, and different types of flips-flops other than those shown in described are satisfactory. Also, the LFSR is just one way to obtain a random bit by the invention, and other types of pseudo-random devices can be employed. 

What is claimed is:
 1. A random number generator comprising: a plurality of cross-connected latches providing at least two latch outputs; at least one input of one latch of the plurality of latches being driven by a clock signal; a first XOR that receives the at least two latch outputs as an input; wherein said first XOR generates a mistake signal “E” when its inputs do not match from the at least two latch outputs being at different logic states; and wherein the mistake signal is compared with a previously stored mistake signal by a second XOR to determine whether to obtain a random bit from a pseudo random stream of bits.
 2. The random number generator according to claim 1, further comprising: an exclusive or network comprising a plurality of strings of cascaded flip-flops, wherein an output of each of the plurality of strings is connected to the first XOR circuit, and wherein each respective latch output of the at least two latch outputs is connected to an input of a respective string of the plurality of cascaded flip-flops.
 3. The random number generator according to claim 2, wherein the plurality of strings of cascaded flip flops comprise D flip-flops.
 4. The random number generator according to claim 2, further comprising a flip-flop arrangement driven by a third XOR to provide an acquisition signal “A” that is input to the XOR network by providing a clock input to the strings of cascaded flip-flops.
 5. The random generator according to claim 1, wherein a logical value of said previously stored mistake is stored in a flip-flop.
 6. The random generator according to claim 1, wherein if the previously stored mistake disagrees with the mistake “E” then a bit is stored in. a shift register.
 7. The random generator according to claim 5, wherein if the previously stored mistake disagrees with the mistake “E” then a bit is stored in a shift register.
 8. The random number generator according to claim 7, wherein the bit is stored in the shift register when the previously stored value is a logical zero.
 9. The random number generator according to claim 7, wherein the shift register is enabled for shifting via an AND gate, wherein said AND gate has a first input from said second XOR and a second input from said flip-flop.
 10. The random number generator according to claim 1, wherein the random bit obtained from the pseudo-random stream of bits is generated by a Linear Feedback Shift Register (LFSR).
 11. The random number generator according to claim 10, wherein the LFSR has at least 64 bits.
 12. The random number generator according to claim 7, wherein the random bit obtained from the pseudo-random stream of bits is generated by a Linear Feedback Shift Register (LFSR).
 13. The random number generator according to claim 12, wherein the LFSR has at least 64 bits.
 14. A method of random number generation comprising the steps of: (a) providing a plurality of cross-connected latches having at least two latch outputs; (b) driving at least one input of one latch of the plurality of latches by a clock signal; (c) connecting a first XOR that receives the at least two latch outputs as an input; (i) wherein said first XOR generates a mistake signal “E” when its inputs do not match from the at least two latch outputs(latch0, latch1) being at different logic states; and (ii) comparing the mistake signal with a previously stored mistake signal by a second XOR to determine whether to obtain a random bit from a pseudo random stream of bits.
 15. The method according to claim 14, wherein step (c) further comprises: (iii) obtaining the random bit from the pseudo-random stream of bits. The method according to claim 14, further comprising: providing an exclusive or network comprising a plurality of strings of cascaded flip- flops, wherein an output of each of the plurality of strings is connected to the first XOR circuit, and wherein each respective latch output of the at least two latch outputs is connected to an input of a respective string of the plurality of cascaded flip-flops. The method according to claim 16, wherein the plurality of strings of cascaded flip flops comprise D flip-flops.
 18. The method to claim 16, further comprising providing a flip-flop arrangement driven by a third XOR to provide an acquisition signal “A” that is input to the XOR network by providing a clock input to the strings of cascaded flip-flops.
 19. The method according to claim 14, wherein a logical value of said previously stored mistake is stored in a flip-flop.
 20. The method according to claim 14, wherein if the previously stored mistake disagrees with the mistake “E” then a bit is stored in a shift register.
 21. The method according to claim 19, wherein if the previously stored mistake disagrees with the mistake “E” then a bit is stored in a shift register.
 22. The method according to claim 21, wherein the bit is stored in the shift register only when the previously stored value is a logical zero.
 23. The method according to claim 21, wherein the shift register is enabled for shifting via an AND gate, wherein said AND gate has a first input from said second XOR and a second input from said flip-flop. 